perm filename LIB.RLS[206,JMC] blob sn#005339 filedate 1971-01-05 generic text, type T, neo UTF8
00100	COMMENT INST(E,M,P) IS AN A-LIST THAT WILL YIELD E WHEN
00200	SUBSTITUTED IN M.  P IS AN A- LIST OF PREVIOUSLY COMMITED SUBSTITUTIONS,
00300	ORDINARILY NIL.  INST REQUIRES A PREDICATE ISVAR(M) TO IDENTIFY 
00400	VARIABLES.;
00500	INST(E,M,P) ← IF P EQ 'NO THEN 'NO
00600		ELSE IF ATOM M THEN (
00700			IF ISVAR M THEN (LAMBDA W;
00800				IF NULL W THEN (M.E).P
00900				ELSE IF CDR W EQ E THEN P
01000				ELSE 'NO)ASSOC(M,P)
01100			ELSE IF M EQ E THEN P
01200			ELSE 'NO )
01300		ELSE IF ATOM E THEN 'NO
01400		ELSE INST(CDR E,CDR M,INST(CAR E,CAR M,P));
01500	
01600	COMMENT THIS  SUBLIS  CREATES NO UNNECESSARY LIST STRUCTURE.;
01700	SUBLIS(P,E) ← IF ATOM E THEN
01800		(LAMBDA W; IF NULL W THEN E ELSE CDR W)
01900		ASSOC(E,P)
02000		ELSE (LAMBDA X,Y; IF X EQ CAR E AND Y EQ CDR E
02100					THEN E
02200				ELSE X.Y)
02300			(SUBLIS(CAR P,E),SUBLIS(CDR P,E));